// src/sdf.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "gmssl/rand.h"  // 包含GMSSL随机数生成库的头文件
#include "sdf.h" 

static int getRandom(char *r, int length) {
    if (r == NULL || length <= 0) {
        return -1;  // 参数无效
    }


    // 初始化随机数生成器（如果需要）
    // 注意：根据gmssl的具体版本和文档，可能需要不同的初始化方式。
     if (RAND_poll() != 1) {
        fprintf(stderr, "随机数生成器初始化失败\n");
        return -1;
    }

    // 生成随机数
    if (RAND_bytes((unsigned char *)r, length) != 1) {
        return -1;  // 随机数生成失败
    }

    return 0;  // 成功
}
LONG SDF_OpenDevice(HANDLE * phDeviceHandle){
    return  0;
}


LONG SDF_CloseDevice(HANDLE hDeviceHandle){
    return 0;
}

int SDF_GenerateRandom(void * hSessionHandle, unsigned int uiLength, unsigned char * pucRandom) {
    // 使用私有函数getRandom来生成随机数
    
    return getRandom((char *)pucRandom, uiLength);
}
